home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / asmpak4.lha / WRITE20.S < prev    next >
Encoding:
Text File  |  1990-11-16  |  4.4 KB  |  222 lines

  1.  
  2. **    WRITE WITH 20 PIXEL WIDE FONT
  3. **    CODE BY CRADON/MATRIX
  4. **    ASM-ONE FORMAT
  5.  
  6.     SECTION    A,CODE_C
  7.  
  8. START    MOVEM.L    D0-A6,-(A7)
  9.     MOVE.W    $DFF01C,INTENA
  10.     MOVE.W    $DFF002,DMACON
  11.     MOVE.W    $DFF010,ADKCON
  12.     MOVE.W    #%0111111111111111,$DFF096
  13.     MOVE.W    #%0111111111111111,$DFF09A
  14.     MOVE.W    #%0111111111111111,$DFF09C
  15.     JSR    INITCOP
  16.     JSR    INITIRQ
  17.     MOVE.W    #%1000001111000000,$DFF096
  18.     MOVE.W     #%1100000000110000,$DFF09A
  19.  
  20.     lea.l    text1,a1
  21.     jsr    write20
  22.  
  23. LOOP    BTST    #6,$BFE001
  24.     BNE.B    LOOP
  25. ENDE    MOVE.W    #%0111111111111111,$DFF096
  26.     MOVE.W    #%0111111111111111,$DFF09A
  27.     MOVE.W    #%0111111111111111,$DFF09C
  28.     MOVE.L    OLDIRQ,$00006C
  29.     MOVE.W    DMACON,D0            
  30.     OR.W    #$8000,D0            
  31.     MOVE.W    D0,$DFF096
  32.     MOVE.W    ADKCON,D0            
  33.     OR.W    #$8000,D0
  34.     MOVE.W    D0,$DFF09E
  35.     MOVE.W    INTENA,D0            
  36.     OR.W    #$C000,D0
  37.     MOVE.W    D0,$DFF09A
  38.     MOVE.W    #0,$DFF088
  39.     MOVEM.L    (A7)+,D0-A6
  40.     RTS
  41.  
  42. ** WRITE TEXT WITH 20 PIXEL WIDE FONT *****************************************
  43.  
  44. write20    lea.l    font,a0
  45.     lea.l    screen1,a2
  46.  
  47. read_position
  48.     moveq    #0,d0
  49.     moveq    #0,d1
  50.     move.b    (a1)+,d0
  51.     move.b    (a1)+,d1
  52.     move.w    d0,x
  53.     move.w    d1,y
  54.  
  55. calc_destination
  56.     move.w    x,d0
  57.     move.w    y,d1
  58.     ext.l    d0
  59.     ext.l    d1
  60.     mulu    #20,d0
  61.     divu    #16,d0
  62.     swap    d0
  63.     move.w    d0,d2        ; d2.w = x rest
  64.     swap    d0        ; d0.w = x i 16 pixel opløsning
  65.     mulu    #2,d0
  66.     ext.l    d0
  67.     mulu    #24,d1
  68.     mulu    #40,d1        ; d1 = y*23*40
  69.     add.w    d1,d0
  70.     lea.l    (a2,d0.w),a5
  71.  
  72. read_ascii
  73.     moveq    #0,d3
  74.     move.b    (a1)+,d3
  75.     tst.b    d3            ; end of text?
  76.     beq    wrtout
  77.  
  78.     cmp.w    #1,d3
  79.     bne    noy
  80.     add.w    #1,y
  81.     bra    read_position
  82.  
  83. noy    cmp.b    #32,d3
  84.     beq    next
  85.  
  86. find_font    
  87.     sub.w    #65,d3
  88.     cmp.b    #19,d3
  89.     ble    nxt1
  90.     mulu    #4,d3    
  91.     lea.l    (a0,d3.w),a4
  92.     add.w    #44*40,a4
  93.     bra    minterm
  94. nxt1    cmp.b    #9,d3
  95.     ble    nxt2
  96.     mulu    #4,d3    
  97.     lea.l    (a0,d3.w),a4
  98.     add.w    #22*40,a4
  99.     bra    minterm
  100. nxt2    mulu    #4,d3    
  101.     lea.l    (a0,d3.w),a4
  102.  
  103. minterm
  104.     move.w    #%0000110111111100,d4    ; minterm d= a + b
  105.     ror.w    #4,d2
  106.     or.w    d2,d4            ; source 'a' shift value
  107.     jsr    blit
  108. next    add.w    #1,x
  109.     bra    calc_destination
  110. wrtout    rts
  111.  
  112. text1    dc.b    0,0,'MATRIX PRODUCTS',1
  113.     dc.b    0,1,'MATRIX PRODUCTS',1
  114.     dc.b    0,2,'MATRIX PRODUCTS',1
  115.     dc.b    0,3,'MATRIX PRODUCTS',1
  116.     dc.b    0,4,'MATRIX PRODUCTS',1
  117.     dc.b    0,5,'MATRIX PRODUCTS',1
  118.     dc.b    0,6,'MATRIX PRODUCTS',1
  119.     dc.b    0,7,'MATRIX PRODUCTS',1
  120.     dc.b    0,8,'MATRIX PRODUCTS',1
  121.     dc.b    0,9,'MATRIX PRODUCTS',0
  122.     even
  123. x    dc.w    0
  124. y    dc.w    0
  125.  
  126. BLIT    BTST    #6,$DFF002
  127.     BNE.B    BLIT
  128.     MOVE.W    D4,$DFF040        ; BLTCON0
  129.     MOVE.W    #0,$DFF042        ; BLTCON1
  130.     MOVE.W    #$FFFFFFFF,$DFF044    ; MASK
  131.     MOVE.L    a4,$DFF050        ; A POINTER
  132.     MOVE.L    A5,$DFF04C        ; B POINTER
  133.     MOVE.L    A5,$DFF054        ; D POINTER
  134.     MOVE.W    #36,$DFF062        ; B MODULO
  135.     MOVE.W    #36,$DFF064        ; A MODULO [320-32]/8
  136.     MOVE.W    #36,$DFF066        ; D MODULO
  137.     MOVE.W    #[23*64+32/16],$DFF058    ; SIZE
  138.     ADD.L    #10240,A5
  139.     ADD.L    #3*23*40,a4    
  140. READY2    BTST    #6,$DFF002
  141.     BNE.B    READY2
  142.     MOVE.W    D4,$DFF040        ; BLTCON0
  143.     MOVE.W    #0,$DFF042        ; BLTCON1
  144.     MOVE.W    #$FFFFFFFF,$DFF044    ; MASK
  145.     MOVE.L    a4,$DFF050        ; A POINTER
  146.     MOVE.L    A5,$DFF04C        ; B POINTER
  147.     MOVE.L    A5,$DFF054        ; D POINTER
  148.     MOVE.W    #36,$DFF062        ; B MODULO
  149.     MOVE.W    #36,$DFF064        ; A MODULO [320-32]/8
  150.     MOVE.W    #36,$DFF066        ; D MODULO
  151.     MOVE.W    #[23*64+32/16],$DFF058    ; SIZE
  152.     RTS
  153.  
  154. ** THIRD LEVEL INTERRUPT ******************************************************
  155.  
  156. MYIRQ    MOVEM.L    D0-A6,-(A7)
  157.  
  158.     MOVE.W    #$20,$DFF09C
  159.     MOVEM.L    (A7)+,D0-A6         
  160.     RTE
  161.  
  162. OLDIRQ    DC.L    0
  163. INTENA    DC.W    0
  164. DMACON    DC.W    0
  165. ADKCON    DC.W    0
  166.  
  167. ** SET COPPER FOR SELFACTIVATION **********************************************
  168.  
  169. INITCOP    LEA     PLANE1,A0
  170.     MOVE.L  #SCREEN1,D0
  171.     MOVE.W  D0,6(A0)
  172.     SWAP    D0
  173.     MOVE.W  D0,2(A0)
  174.     SWAP    D0
  175.     LEA     PLANE2,A0
  176.     MOVE.L  #SCREEN1+10240,D0
  177.     MOVE.W  D0,6(A0)
  178.     SWAP    D0
  179.     MOVE.W  D0,2(A0)
  180.     SWAP    D0
  181.     MOVE.L    #COPPER,D0
  182.     LEA.L    ADRESS,A0
  183.     MOVE.W    D0,6(A0)
  184.     SWAP    D0
  185.     MOVE.W    D0,2(A0)
  186.     MOVE.L    #COPPER,$DFF084
  187.     MOVE.B    #$00,$DFF08A
  188.     RTS
  189. INITIRQ    MOVE.L     $6C,OLDIRQ
  190.     MOVE.L     #MYIRQ,$6C
  191.     RTS
  192.     
  193. ** COPPERLIST *****************************************************************
  194.  
  195.     SECTION    B,DATA_C
  196.  
  197. COPPER    DC.W    $0106,$0000,$01FC,$0000
  198.     DC.W    $008E,$2C81,$0090,$2CC1
  199.     DC.W    $0092,$0038,$0094,$00D0
  200.     DC.W    $0102,$0000,$0104,$0000
  201.     DC.W    $0108,$0000,$010A,$0000
  202.  
  203. COLOUR    DC.W    $0180,$0FFF,$0182,$0000
  204.     DC.W    $0184,$0686,$0186,$00B0
  205.     DC.W    $0188,$080f,$018A,$0000
  206.     DC.W    $018C,$0fF0,$018E,$0813
  207.  
  208. PLANE1    DC.W    $00E0,$0000,$00E2,$0000
  209. PLANE2    DC.W    $00E4,$0000,$00E6,$0000
  210.     DC.W    $00E8,$0000,$00EA,$0000
  211.     DC.W    $3001,$FF00,$0100,$2200
  212.     DC.W    $FFE1,$FFFE,$2901,$FF00
  213.     DC.W    $0100,$0200
  214.  
  215. ADRESS    DC.W    $0084,$0000,$0086,$0000
  216.     DC.W    $008A,$0000,$FFFF,$FFFE    ; FORCE RESTART
  217.  
  218. ** SCREEN *********************************************************************
  219.  
  220. FONT    INCBIN    "DH0:CODING/SOURCE/SCROLLER/GREENFONT2.BIT"
  221. SCREEN1    BLK.B    [320/8*512],$00
  222.